package cc.rengu.igas.bomp.common.dao;

import cc.rengu.igas.bomp.common.entity.UserInfo;

import java.util.List;

/**
 * 用户信息表操作接口类
 * Created by wangcheng on 2021/7/19 14:12
 */
public interface UserInfoMapper {
    /**
     * 登记用户信息
     *
     * @param userInfo 用户信息
     * @return 0-成功，其它-失败
     * @throws Exception 异常
     */
    int insertUserInfo(UserInfo userInfo) throws Exception;

    /**
     * 根据非业务主键更新用户信息
     *
     * @param userInfo 用户信息
     * @return 0-成功，其它-失败
     * @throws Exception 异常
     */
    int updateUserInfoById(UserInfo userInfo) throws Exception;

    /**
     * 根据业务主键更新用户信息
     *
     * @param userInfo 用户信息
     * @return 0-成功，其它-失败
     * @throws Exception 异常
     */
    int updateUserInfoByPrimaryKey(UserInfo userInfo) throws Exception;

    /**
     * 根据业务主键查询用户信息
     *
     * @param instId 多法人标识
     * @param userId 用户标识
     * @return 用户信息
     * @throws Exception 异常
     */
    UserInfo selectUserInfoByPrimaryKey(String instId, String userId) throws Exception;

    /**
     * 根据证件信息查询用户信息
     *
     * @param instId   多法人标识
     * @param userType 用户类型
     * @param userInst 用户所属主体
     * @param certType 证件类型
     * @param certNo   证件号码
     * @return 用户信息
     * @throws Exception 异常
     */
    UserInfo selectUserInfoByCertInfo(String instId, String userType, String userInst, String certType, String certNo) throws Exception;

    /**
     * 根据手机号查询用户信息
     *
     * @param instId   多法人标识
     * @param userType 用户类型
     * @param userInst 用户所属主体
     * @param phoneNo  手机号
     * @return 用户信息列表
     * @throws Exception 异常
     */
    List<UserInfo> selectUserInfoByPhoneNo(String instId, String userType, String userInst, String phoneNo) throws Exception;

    /**
     * 根据OpenId查询用户信息
     *
     * @param instId   多法人标识
     * @param userType 用户类型
     * @param openId   openId
     * @return 用户信息
     * @throws Exception 异常
     */
    UserInfo selectUserInfoByOpenId(String instId, String userType, String openId) throws Exception;

    /**
     * 根据用户登录账号查询用户信息
     *
     * @param instId   多法人标识
     * @param userType 用户类型
     * @param loginId  用户登录账号
     * @return 用户信息
     * @throws Exception 异常
     */
    UserInfo selectUserInfoByLoginId(String instId, String userType, String loginId) throws Exception;
}
